package com.kits.store.core

import android.content.ContentValues
import android.content.Context
import android.net.Uri
import android.os.Build
import android.os.Environment
import android.provider.MediaStore
import androidx.annotation.RequiresApi

/**
 * 标准的公共目录有：
 * 通过MediaStore访问 外部存储空间的公共目录
 * android系统提供的一个多媒体数据,对公共目录的操作也与数据库操作相同
 * 注意点:
 * 1. Android10 不申请权限，可以读写本应用创建的文件，非本应用，系统创建的文件不可以读写
 */

/**
 * 1. 如果 API < 29 的情况下，可以直接访问文件夹路径
 * 2. 如果 API = 29 且 requestLegacyExternalStorage="true" 可以直接访问文件夹路径
 * 3. 如果 API = 29 且 requestLegacyExternalStorage="false" 使用 MediaStore 访问 公共文件夹
 * 4. 如果 API > 29 使用MediaStore 访问 公共文件夹
 */
object PublicStorage {

    /**
     * 标准文件参见Environment
     */
    enum class STAND_AUDIO_DIR(val value:String){
        DIRECTORY_MUSIC(Environment.DIRECTORY_MUSIC), //音乐存放的标准目录。
        DIRECTORY_PODCASTS(Environment.DIRECTORY_PODCASTS), // 系统广播存放的标准目录。
        DIRECTORY_NOTIFICATIONS(Environment.DIRECTORY_NOTIFICATIONS), //  系统通知铃声存放的标准目录
        DIRECTORY_ALARMS(Environment.DIRECTORY_ALARMS), // 系统提醒铃声存放的标准目录。
        DIRECTORY_RINGTONES(Environment.DIRECTORY_RINGTONES), // 系统铃声存放的标准目录
//        @RequiresApi(Build.VERSION_CODES.Q)
//        DIRECTORY_AUDIOBOOKS(Environment.DIRECTORY_AUDIOBOOKS) // 音频书籍存放的标准目录
    }

    enum class STAND_VIDEO_DIR(val value:String){
        DIRECTORY_MOVIES(Environment.DIRECTORY_MOVIES ),// 视频文件存储的标准目录
        DIRECTORY_DCIM(Environment.DIRECTORY_DCIM),//视频文件通过摄像头拍摄存放在"/DCIM"
    }

    enum class STAND_IMAGE_DIR(val value:String){
        DIRECTORY_PICTURES(Environment.DIRECTORY_PICTURES), // 图片存放的标准目录
        DIRECTORY_DCIM(Environment.DIRECTORY_DCIM),// 相机拍摄照片和视频的标准目录
//        @RequiresApi(Build.VERSION_CODES.Q)
//        DIRECTORY_SCREENSHOTS(Environment.DIRECTORY_SCREENSHOTS),// 截屏文件存储的标准目录，默认在Pictures下
    }

    enum class STAND_FILES_DIR(val value:String){
        DIRECTORY_DOWNLOADS(Environment.DIRECTORY_DOWNLOADS),// 下载文件存储的标准目录
        DIRECTORY_DOCUMENTS(Environment.DIRECTORY_DOCUMENTS)
    }


    /**
     * 在外部存储标准 图像相关 文件夹中创建文件
     */

    fun standImageInsertFile(context: Context,dir:String,contentValues: ContentValues): Uri? {
        return context.contentResolver?.insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,contentValues)
    }



}